package com.zmn.oms.services.interfaces.changerecord;

import com.zmn.oms.model.dto.changerecord.*;
import com.zmn.oms.model.entity.changerecord.OrderChangeRecord;

import java.util.List;

/**
 * 类描述 订单预约，派单等信息修改记录
 *
 * @author xiewenbing
 * @date 2019/11/26 15:20
 */
public interface OrderChangeRecordService {

    /**
     * 根据订单Id集合查询
     * @param orderIdList
     * @return
     */
    List<OrderChangeRecord> listByOrderIdList(List<Long> orderIdList);

    /**
     * 添加修改订单预约时间信息记录
     * @param changeDutyTimeDTO
     */
    void updateChangeDutyTimeRecord(ChangeDutyTimeDTO changeDutyTimeDTO);

    /**
     * 修改上门扫码时间
     * @param visitScanTimeDTO
     */
    void updateVisitScanTimeRecord(ChangeVisitScanTimeDTO visitScanTimeDTO);

    /**
     * 工程师形象照时间
     * @param masterImageTimeDTO
     */
    void updateMasterImageTimeRecord(ChangeMasterImageTimeDTO masterImageTimeDTO);

    /**
     * 添加修改订单派单信息记录
     * @param changeDistributeDTO
     */
    void updateChangeDistributeRecord(ChangeDistributeDTO changeDistributeDTO);

    /**
     * 改工单预付
     * @param changeRecordDTO
     */
    void updateChangePrepayAmountRecord(ChangeRecordDTO changeRecordDTO);

    /**
     * 通过订单id查找订单信息修改记录
     * @param orderId
     */
    OrderChangeRecord getChangeRecordByOrderId(Long orderId);

    /**
     * 改工责任工程师
     *
     * @param changeLiableMasterDTO
     */
    void updateLiableMasterRecord(ChangeLiableMasterDTO changeLiableMasterDTO);

    /**
     * 订单取消责任工程师
     * @param changeLiableMasterDTO
     */
    void updateCancelLiableMasterRecord(ChangeLiableMasterDTO changeLiableMasterDTO);

    /**
     * 订单清空上门信息
     *
     * @param orderId
     * @param workId
     */
    void clearVisitInfo(Long orderId, Long workId);

    /**
     * 清空 责任工程师和最终责任工程师
     * @param orderId
     */
    void clearCancelLiableAndLiableMasterRecord(Long orderId);

    /**
     * 更新取消责任和责任工程师
     * @param changeLiableMasterDTO
     */
    void updateCancelLiableAndLiableMasterRecord(ChangeLiableMasterDTO changeLiableMasterDTO);

    /**
     * 更新工单服务分类
     * @param changeServCategDTO
     */
    void updateChangeServCateg(ChangeServCategDTO changeServCategDTO);

    /**
     * 通过订单id查找订单信息修改记录-主库查询
     * @param orderId
     * @return
     */
    OrderChangeRecord getChangeRecordByOrderIdSrcMaster(Long orderId);
}
